var express = require('express');

var router = express.Router();
var utils = require('../../functions/utils');

//bypass to post
router.get('/' , function(req,res)
{
	var html = "<form name='tmpForm' method='post' action='/'></form>";
	html +=	"<script language=javascript>tmpForm.submit();</script>";

	res.writeHead(200 , {'Content-Type' : 'text/html; charset=utf-8'});
	res.end(html);

});

router.post('/', function(req,res)
{
	var loginId = req.body.loginId;
	var loginPwd = req.body.loginPwd;
	var sessionKey = req.session.key;
	var html = null;


	// loginId 가 넘어왔을 경우 로긴작업. 
	if(utils.isValidString(loginId) && utils.isValidString(loginPwd) && !utils.isValidString(sessionKey))
	{
		var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.ip;

		// 패스워드 암호화한다. 
		if(utils.isValidString(loginPwd))
			loginPwd = utils.passwordEncrypt(loginPwd);

		// session Key 만든다.
		var sessionKey = loginId + ip + String(new Date().getTime());
		sessionKey = utils.passwordEncrypt(sessionKey);

		// db check
		global.master_db.connection.getConnection(function(err,connection)
		{
			if(err)
			{
				throw err;
			}


			var input_param = [loginId , loginPwd , ip , sessionKey];

			var sql = 'call manage_login(? , ? , ? , ? , @result); SELECT @result as result';

			var query = connection.query(sql, input_param , function (err, rows) 
			{
				connection.release();
				if(err)
				{
					throw err;
				}

				var ret = {};	 // 기본값은 성공

				// 성공 - 메뉴리스트 보여준다.
				if(rows[1][0].result == 1)
				{
					req.session.key=sessionKey;

					utils.sendTemplate('./template/managerMenu' , res);

				}
				// 실패 - 로그인 페이지 
				else
				{
					req.session.key=null;

					html =	"<script language=javascript>alert('Invalid email/password'); location.href='/';  </script>";

					res.writeHead(200 , {'Content-Type' : 'text/html; charset=utf-8'});
					res.end(html);
				}

			}); // call api_incViewCount

		}); // getConnection

	}
	// sessionkey가 있을 경우 
	else if(utils.isValidString(sessionKey))
	{
		var async = require('async');
		async.waterfall([
			function(cb)
			{
				utils.checkManagerSession(sessionKey , cb);
			}
			,function(result , cb) 
			{
				// 실패 - 로그인 페이지 
				if(result == 0)
				{
					utils.notifyManagerSessionExpired(req , res);
				}
				// 성공 - 실제 작업코드.
				else
				{	
					// 메뉴리스트 보여준다.
					utils.sendTemplate('./template/managerMenu' , res);
				}

			}
		]); //waterfall
	}
	// 암것도 없으면 loginPage
	else
	{
		utils.sendTemplate('./template/login' , res);
	}

});

module.exports = router;

